package com.leo.foodmaster.admin.system.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.leo.foodmaster.admin.system.dto.UserDTO;
import com.leo.foodmaster.admin.system.entity.SysUser;
import com.baomidou.mybatisplus.extension.service.IService;
import com.leo.foodmaster.commons.entity.Result;

/**
 * <p>
 * 用户表 服务类
 * </p>
 *
 * @author Leo
 * @since 2021-06-17
 */
public interface IUserService extends IService<SysUser> {

    /**
     * 用户登录
     * @param username 用户名
     * @param password 密码
     * @param code 验证码
     * @param uuid 验证码唯一标识
     * @return token
     */
    String login(String username, String password, String code, String uuid);

    /**
     * 分页条件查询用户列表
     * @param page 分页参数
     * @param organId 机构Id
     * @param deptId 部门Id
     * @param account 用户账号
     * @param phone 手机号码
     * @param status 用户状态
     * @param beginTime 开始时间
     * @param endTime 结束时间
     * @return IPage<User>
     */
    IPage<SysUser> getUserPageList(Page<SysUser> page, Long organId, Long deptId, String account,
                                String phone, Integer status, String beginTime, String endTime);

    /**
     * 新增用户
     * @param userDto 用户信息
     * @return Result<Void>
     */
    Result<Object> addUser(UserDTO userDto);

    /**
     * 修改用户
     * @param userDto 用户信息
     * @return Result<Object>
     */
    Result<Object> updateUser(UserDTO userDto);

    /**
     * 删除用户
     * @param userIds 用户Id
     * @return Result<Object>
     */
    Result<Object> deleteUser(String userIds);

    /**
     * 修改用户状态
     * @param sysUser 用户状态信息
     * @return Result<Object>
     */
    Result<Object> updateStatus(SysUser sysUser);
}
